/** @format */

import axios from 'axios';

// 创建axios实例
const service = axios.create({
  baseURL: '/api/v1',
  headers: {Accept: 'application/json'},
  timeout: 5000,
});

// request 拦截器
service.interceptors.request.use(
  (config: any) => {
    // 后台管理界面的请求、除登录外 都需要token
    if (config.url.indexOf('/admin/') > -1) {
      const token = localStorage.getItem('token');
      if (token) {
        config.headers.Authorization = `Bearer ${token}`;
      } else {
        // 重定向到登录页
        window.location.href = window.location.origin + '/login';
        return Promise.reject({
          msg: '请先登录',
        });
      }
    }

    return config;
  },
  error => Promise.reject(error),
);

/*
 *  后端响应
 *  {
 *    msg:错误消息
 *    msgCode:错误状态码
 *    data:响应的正确数据
 *  }
 */
// response 拦截器
service.interceptors.response.use(
  response => {
    // 后端判定未登录
    if (response.data.msgCode === -1) {
      localStorage.setItem('token', '');
      // 重定向到登录页
      window.location.href = window.location.origin + '/login';
      return Promise.reject({
        msg: '请先登录',
      });
    }

    // 其他错误提示
    if (response.data.msgCode === 1) {
      return Promise.reject({
        msg: response.data.msg,
      });
    }
    return response.data.data;
  },
  error => Promise.reject(error),
);

export {service};
